// pages/core/login/login.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    isAgree: true,
    showPolicyDialog: false,
    policyTitle: '',
    policyContent: '',
    showPhoneDialog: false,
    phoneNumber: '',
    verificationCode: '',
    codeSent: false,
    codeCountdown: 60
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 页面加载
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  // 切换协议同意状态
  toggleAgreement() {
    this.setData({
      isAgree: !this.data.isAgree
    });
  },

  // 查看用户协议
  viewUserAgreement() {
    this.setData({
      showPolicyDialog: true,
      policyTitle: '用户协议',
      policyContent: '欢迎使用贵州四季康养文旅小程序！本协议是您与贵州四季康养文旅小程序之间关于使用本服务所订立的协议。使用本服务前，请您仔细阅读本协议的全部内容。如您不同意本协议的任何内容，请勿注册或使用本服务。如您对本协议有任何疑问，请联系我们的客服。'
    });
  },

  // 查看隐私政策
  viewPrivacyPolicy() {
    this.setData({
      showPolicyDialog: true,
      policyTitle: '隐私政策',
      policyContent: '本隐私政策描述了贵州四季康养文旅小程序如何收集、使用、存储和共享您的个人信息。我们重视您的隐私，并致力于保护您的个人信息安全。请您在使用我们的服务前，仔细阅读并了解本隐私政策。'
    });
  },

  // 关闭协议弹窗
  closePolicyDialog() {
    this.setData({
      showPolicyDialog: false
    });
  },

  // 处理微信用户信息
  onGetUserInfo(e) {
    if (!this.data.isAgree) {
      wx.showToast({
        title: '请先同意用户协议和隐私政策',
        icon: 'none'
      });
      return;
    }
    
    const { userInfo } = e.detail;
    if (userInfo) {
      this.wxLogin(userInfo);
    } else {
      wx.showToast({
        title: '授权失败，请重试',
        icon: 'none'
      });
    }
  },

  // 微信登录
  wxLogin(userInfo) {
    // 显示加载提示
    wx.showLoading({
      title: '登录中...',
      mask: true
    });
    
    // 此处预留接口调用 - 用户登录
    wx.login({
      success: (res) => {
        if (res.code) {
          // 调用登录接口
          const loginPromise = () => {
            // 未来实现: 调用云函数进行登录
            // 模拟登录成功
            return new Promise((resolve) => {
              setTimeout(() => {
                resolve({
                  code: 0,
                  message: '登录成功',
                  data: {
                    token: 'mock-token',
                    userInfo: {
                      userId: 'user123',
                      nickName: userInfo.nickName || '游客',
                      avatarUrl: userInfo.avatarUrl || '',
                      phone: '',
                      memberLevel: 1
                    }
                  }
                });
              }, 1000);
            });
          };
          
          loginPromise()
            .then((res) => {
              if (res.code === 0) {
                // 存储用户信息
                wx.setStorageSync('token', res.data.token);
                wx.setStorageSync('userInfo', res.data.userInfo);
                
                // 登录成功，跳转到首页
                wx.switchTab({
                  url: '/pages/core/home/home'
                });
              } else {
                wx.showToast({
                  title: res.message || '登录失败',
                  icon: 'none'
                });
              }
            })
            .catch((error) => {
              console.error('登录失败:', error);
              wx.showToast({
                title: '登录失败，请重试',
                icon: 'none'
              });
            })
            .finally(() => {
              wx.hideLoading();
            });
        } else {
          wx.hideLoading();
          wx.showToast({
            title: '登录失败，请重试',
            icon: 'none'
          });
        }
      },
      fail: () => {
        wx.hideLoading();
        wx.showToast({
          title: '登录失败，请重试',
          icon: 'none'
        });
      }
    });
  },

  // 显示手机号登录弹窗
  onPhoneLogin() {
    if (!this.data.isAgree) {
      wx.showToast({
        title: '请先同意用户协议和隐私政策',
        icon: 'none'
      });
      return;
    }
    
    this.setData({
      showPhoneDialog: true,
      phoneNumber: '',
      verificationCode: '',
      codeSent: false,
      codeCountdown: 60
    });
  },

  // 手机号输入处理
  onPhoneInput(e) {
    this.setData({
      phoneNumber: e.detail.value
    });
  },

  // 验证码输入处理
  onCodeInput(e) {
    this.setData({
      verificationCode: e.detail.value
    });
  },

  // 发送验证码
  sendVerificationCode() {
    const phoneNumber = this.data.phoneNumber;
    if (!phoneNumber || phoneNumber.length !== 11) {
      wx.showToast({
        title: '请输入有效的手机号',
        icon: 'none'
      });
      return;
    }
    
    // 此处预留接口调用 - 发送验证码
    const sendCodePromise = () => {
      // 未来实现: 调用云函数发送验证码
      // 模拟发送成功
      return new Promise((resolve) => {
        setTimeout(() => {
          resolve({
            code: 0,
            message: '发送成功'
          });
        }, 500);
      });
    };
    
    wx.showLoading({
      title: '发送中...'
    });
    
    sendCodePromise()
      .then((res) => {
        if (res.code === 0) {
          wx.showToast({
            title: '验证码已发送',
            icon: 'success'
          });
          
          // 开始倒计时
          this.setData({
            codeSent: true
          });
          
          this.startCountdown();
        } else {
          wx.showToast({
            title: res.message || '发送失败',
            icon: 'none'
          });
        }
      })
      .catch(() => {
        wx.showToast({
          title: '发送失败，请重试',
          icon: 'none'
        });
      })
      .finally(() => {
        wx.hideLoading();
      });
  },

  // 倒计时函数
  startCountdown() {
    const timer = setInterval(() => {
      const countdown = this.data.codeCountdown - 1;
      
      if (countdown <= 0) {
        clearInterval(timer);
        this.setData({
          codeCountdown: 60,
          codeSent: false
        });
      } else {
        this.setData({
          codeCountdown: countdown
        });
      }
    }, 1000);
  },

  // 确认手机号登录
  confirmPhoneLogin() {
    const { phoneNumber, verificationCode } = this.data;
    
    if (!phoneNumber || phoneNumber.length !== 11) {
      wx.showToast({
        title: '请输入有效的手机号',
        icon: 'none'
      });
      return;
    }
    
    if (!verificationCode || verificationCode.length !== 6) {
      wx.showToast({
        title: '请输入有效的验证码',
        icon: 'none'
      });
      return;
    }
    
    wx.showLoading({
      title: '登录中...'
    });
    
    // 此处预留接口调用 - 手机号登录
    const phoneLoginPromise = () => {
      // 未来实现: 调用云函数进行手机号登录
      // 模拟登录成功
      return new Promise((resolve) => {
        setTimeout(() => {
          resolve({
            code: 0,
            message: '登录成功',
            data: {
              token: 'mock-token',
              userInfo: {
                userId: 'user123',
                nickName: '用户' + phoneNumber.substring(7),
                avatarUrl: '',
                phone: phoneNumber,
                memberLevel: 1
              }
            }
          });
        }, 1000);
      });
    };
    
    phoneLoginPromise()
      .then((res) => {
        if (res.code === 0) {
          // 存储用户信息
          wx.setStorageSync('token', res.data.token);
          wx.setStorageSync('userInfo', res.data.userInfo);
          
          // 关闭弹窗
          this.setData({
            showPhoneDialog: false
          });
          
          // 登录成功，跳转到首页
          wx.switchTab({
            url: '/pages/core/home/home'
          });
        } else {
          wx.showToast({
            title: res.message || '登录失败',
            icon: 'none'
          });
        }
      })
      .catch((error) => {
        console.error('登录失败:', error);
        wx.showToast({
          title: '登录失败，请重试',
          icon: 'none'
        });
      })
      .finally(() => {
        wx.hideLoading();
      });
  },
  
  // 取消手机号登录
  cancelPhoneLogin() {
    this.setData({
      showPhoneDialog: false
    });
  }
})